package com.atguigu.common.Valid;


import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.HashSet;
import java.util.Set;

/*
*
* 自定义校验器
* 1实现ConstraintValidator<ListValue,Integer>校验器接口：两个泛型 注解名称 注解字段的类型
 *
* */
public class ListValueConstraintValidator implements ConstraintValidator<ListValue,Integer> {
    private Set<Integer>  set = new HashSet<>();
    //初始化方法，获取注解里面属性重要数据
    @Override
    public void initialize(ListValue constraintAnnotation) {
        //constraintAnnotation对象调用vals()获取vals属性的数组
        int[] vals = constraintAnnotation.vals();
        //遍历vals属性的数组 把数组中的元素添加到set集合中
        for (int val: vals) {
            set.add(val);
        }
    }
    //校验判断 这里只能取0,1这两个值
    @Override
    public boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) {
        //校验的字段是否包含 如果有包含返回true 否则返回false
        return set.contains(integer);
    }
}
